package uy.com.csi.gestpro.model.ejbbean;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import uy.com.csi.gestpro.model.ejbremote.EmpresaEjbRemote;
import uy.com.csi.gestpro.model.mantenimiento.GpEmprsa;
import uy.com.csi.gestpro.model.proyecto.GpSbcntrtsta;

@Stateless
public class EmpresaEjb implements EmpresaEjbRemote {
	@PersistenceContext(name = "pu_gestpro")
	EntityManager em;

	public EmpresaEjb() {
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<GpSbcntrtsta> getSubContratistaByInfDiario(Integer id) {
		List<GpSbcntrtsta> empresaLst = null;
		try {
			String consulta = "select sc from GpSbcntrtsta sc where sc.gpInfrmeDrio.id=:id";
			Query q = em.createQuery(consulta);
			q.setParameter("id", id);
			empresaLst = (List<GpSbcntrtsta>) q.getResultList();
		} catch (Exception e) {
		}
		return empresaLst;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<GpEmprsa> getEmpresaLst() {
		List<GpEmprsa> empresaLst = null;
		try {
			String consulta = "select emp from GpEmprsa emp order by emp.rzonScial";
			Query q = em.createQuery(consulta);
			empresaLst = (List<GpEmprsa>) q.getResultList();
		} catch (Exception e) {
		}
		return empresaLst;
	}
	
	@SuppressWarnings("unchecked")
	@Override
	public List<GpEmprsa> getEmpresaLst(String razSocial, int numRows) {
		List<GpEmprsa> empresaLst = null;
		try {
			String consulta = "select emp from GpEmprsa emp where emp.rzonScial like :rzonScial order by emp.rzonScial";
			Query q = em.createQuery(consulta);
			q.setParameter("rzonScial", razSocial+"%");
			q.setMaxResults(numRows);
			empresaLst = (List<GpEmprsa>) q.getResultList();
		} catch (Exception e) {
		}
		return empresaLst;
	}

	
	@Override
	public GpEmprsa getEmpresaById(Integer id) {
		GpEmprsa empresa = null;
		try {
			String consulta = "select emp from GpEmprsa emp where emp.id=:id";
			Query q = em.createQuery(consulta);
			q.setParameter("id", id);
			empresa = (GpEmprsa) q.getSingleResult();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return empresa;
	}
	
	@Override
	public GpEmprsa getEmpresaRazonSocial(String razSocial){
		GpEmprsa empresa = null;
		try {
			String consulta = "select emp from GpEmprsa emp where emp.rzonScial=:rzonScial";
			Query q = em.createQuery(consulta);
			q.setParameter("rzonScial", razSocial);
			empresa = (GpEmprsa) q.getSingleResult();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return empresa;
	}
	
	@Override
	public GpEmprsa saveEmpresa(GpEmprsa empresa){
		em.persist(empresa);
		return empresa;
	}
}
